package com.neusoft.feature;

import org.junit.Test;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;

/**
 * @author lichunlong lcl253137@alibaba-inc.com
 * @desc 局部变量类型推断
 * @date 2023-01-05
 */
public class TypeInferenceFeature {

    /**
     * JDK 10以前，最简就是diamond菱形泛型, 泛型不能省略，否则不能使用泛型中的方法
     */
    @Test
    public void test1() {
        HashSet<Map.Entry<Integer, String>> set = new HashSet<>();
        Iterator<Map.Entry<Integer, String>> iterator = set.iterator();
    }

    /**
     * JDK 10: 局部变量类型推断, 不用再指定泛型
     */
    @Test
    public void test2() {
        // 局部变量的初始化
        var list = new ArrayList<Integer>();

        var set = new HashSet<Map.Entry<Integer, String>>();
        var iterator = set.iterator();

        // 增强for循环
        for (var variable : list) {
            System.out.println(variable);
        }

        // 传统for循环
        for (var i = 0; i < 100; i++) {
            System.out.println(i);
        }
    }
}
